"""
数据库模型基类
提供所有模型共享的配置和功能
"""
from app.extensions import db
from sqlalchemy import Column, DateTime
from datetime import datetime


class BaseModel(db.Model):
    """
    所有数据库模型的基类
    提供共享的字段和功能
    """
    
    __abstract__ = True  # 表示这是抽象基类，不会创建表
    
    # 通用时间戳字段
    created_at = Column(
        DateTime, 
        nullable=False, 
        default=datetime.utcnow,
        comment='创建时间'
    )
    
    updated_at = Column(
        DateTime, 
        nullable=False, 
        default=datetime.utcnow, 
        onupdate=datetime.utcnow,
        comment='更新时间'
    )
    
    def to_dict(self):
        """
        将模型实例转换为字典
        用于API响应序列化
        """
        result = {}
        for column in self.__table__.columns:
            # 获取字段名和值
            column_name = column.name
            value = getattr(self, column_name)
            
            # 处理特殊类型
            if isinstance(value, datetime):
                # 将datetime转换为字符串
                result[column_name] = value.isoformat()
            else:
                result[column_name] = value
        
        return result